package com.zjcloud.jwgl.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 时间段对象 sc_time_slot
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public class ScTimeSlot extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 时间段ID */
    private Long id;

    /** 时间段编码 */
    @Excel(name = "时间段编码")
    private String slotCode;

    /** 时间段名称 */
    @Excel(name = "时间段名称")
    private String slotName;

    /** 星期几(1-7,1为周一) */
    @Excel(name = "星期几")
    private Integer dayOfWeek;

    /** 星期名称 */
    @Excel(name = "星期名称")
    private String dayName;

    /** 节次(第几节课) */
    @Excel(name = "节次")
    private Integer period;

    /** 时间段类型(MORNING上午 AFTERNOON下午 EVENING晚上) */
    @Excel(name = "时间段类型", readConverterExp = "MORNING=上午,AFTERNOON=下午,EVENING=晚上")
    private String timeType;

    /** 开始时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "开始时间", width = 30, dateFormat = "HH:mm")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "结束时间", width = 30, dateFormat = "HH:mm")
    private Date endTime;

    /** 课时长度(分钟) */
    @Excel(name = "课时长度")
    private Integer duration;

    /** 课间休息时间(分钟) */
    @Excel(name = "课间休息时间")
    private Integer breakTime;

    /** 是否可排课(1是 0否) */
    @Excel(name = "是否可排课", readConverterExp = "1=是,0=否")
    private String isSchedulable;

    /** 优先级(1-10) */
    @Excel(name = "优先级")
    private Integer priority;

    /** 权重系数 */
    @Excel(name = "权重系数")
    private String weightCoefficient;

    /** 适用学段 */
    @Excel(name = "适用学段")
    private String applicableStages;

    /** 特殊标记 */
    @Excel(name = "特殊标记")
    private String specialMark;

    /** 使用频率 */
    @Excel(name = "使用频率")
    private Integer usageFrequency;

    /** 冲突等级(LOW低 MEDIUM中 HIGH高) */
    @Excel(name = "冲突等级", readConverterExp = "LOW=低,MEDIUM=中,HIGH=高")
    private String conflictLevel;

    /** 排序 */
    @Excel(name = "排序")
    private Integer sortOrder;

    /** 状态(1启用 0禁用) */
    @Excel(name = "状态", readConverterExp = "1=启用,0=禁用")
    private String status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setSlotCode(String slotCode) 
    {
        this.slotCode = slotCode;
    }

    public String getSlotCode() 
    {
        return slotCode;
    }
    public void setSlotName(String slotName) 
    {
        this.slotName = slotName;
    }

    public String getSlotName() 
    {
        return slotName;
    }
    public void setDayOfWeek(Integer dayOfWeek) 
    {
        this.dayOfWeek = dayOfWeek;
    }

    public Integer getDayOfWeek() 
    {
        return dayOfWeek;
    }
    public void setDayName(String dayName) 
    {
        this.dayName = dayName;
    }

    public String getDayName() 
    {
        return dayName;
    }
    public void setPeriod(Integer period) 
    {
        this.period = period;
    }

    public Integer getPeriod() 
    {
        return period;
    }
    public void setTimeType(String timeType) 
    {
        this.timeType = timeType;
    }

    public String getTimeType() 
    {
        return timeType;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setDuration(Integer duration) 
    {
        this.duration = duration;
    }

    public Integer getDuration() 
    {
        return duration;
    }
    public void setBreakTime(Integer breakTime) 
    {
        this.breakTime = breakTime;
    }

    public Integer getBreakTime() 
    {
        return breakTime;
    }
    public void setIsSchedulable(String isSchedulable) 
    {
        this.isSchedulable = isSchedulable;
    }

    public String getIsSchedulable() 
    {
        return isSchedulable;
    }
    public void setPriority(Integer priority) 
    {
        this.priority = priority;
    }

    public Integer getPriority() 
    {
        return priority;
    }
    public void setWeightCoefficient(String weightCoefficient) 
    {
        this.weightCoefficient = weightCoefficient;
    }

    public String getWeightCoefficient() 
    {
        return weightCoefficient;
    }
    public void setApplicableStages(String applicableStages) 
    {
        this.applicableStages = applicableStages;
    }

    public String getApplicableStages() 
    {
        return applicableStages;
    }
    public void setSpecialMark(String specialMark) 
    {
        this.specialMark = specialMark;
    }

    public String getSpecialMark() 
    {
        return specialMark;
    }
    public void setUsageFrequency(Integer usageFrequency) 
    {
        this.usageFrequency = usageFrequency;
    }

    public Integer getUsageFrequency() 
    {
        return usageFrequency;
    }
    public void setConflictLevel(String conflictLevel) 
    {
        this.conflictLevel = conflictLevel;
    }

    public String getConflictLevel() 
    {
        return conflictLevel;
    }
    public void setSortOrder(Integer sortOrder) 
    {
        this.sortOrder = sortOrder;
    }

    public Integer getSortOrder() 
    {
        return sortOrder;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("slotCode", getSlotCode())
            .append("slotName", getSlotName())
            .append("dayOfWeek", getDayOfWeek())
            .append("dayName", getDayName())
            .append("period", getPeriod())
            .append("timeType", getTimeType())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("duration", getDuration())
            .append("breakTime", getBreakTime())
            .append("isSchedulable", getIsSchedulable())
            .append("priority", getPriority())
            .append("weightCoefficient", getWeightCoefficient())
            .append("applicableStages", getApplicableStages())
            .append("specialMark", getSpecialMark())
            .append("usageFrequency", getUsageFrequency())
            .append("conflictLevel", getConflictLevel())
            .append("sortOrder", getSortOrder())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}